Page({
  data: {
    messages: [],
    inputMessage: '',
    isLoading: false,
    scrollToView: '',
    currentTime: '',
    messageId: 0,
    quickQuestions: [],
    conversationContext: [], // 对话上下文
    apiStatus: {
      deepseekAvailable: false,
      lastCheck: null
    }
  },

  onLoad() {
    this.updateCurrentTime();
    // 每秒更新时间
    this.timeInterval = setInterval(() => {
      this.updateCurrentTime();
    }, 1000);
    
    // 获取快捷问题列表
    this.getQuickQuestions();
    
    // 检查API状态
    this.checkApiStatus();
  },

  onUnload() {
    if (this.timeInterval) {
      clearInterval(this.timeInterval);
    }
  },

  updateCurrentTime() {
    const now = new Date();
    const timeString = now.toLocaleTimeString('zh-CN', { 
      hour: '2-digit', 
      minute: '2-digit' 
    });
    this.setData({ currentTime: timeString });
  },

  // 检查API状态
  checkApiStatus() {
    wx.request({
      url: 'http://localhost:3000/api/ai/status',
      method: 'GET',
      success: (res) => {
        if (res.data && res.data.code === 0) {
          this.setData({
            apiStatus: {
              deepseekAvailable: res.data.data.deepseekAvailable,
              lastCheck: new Date().toLocaleString()
            }
          });
          
          if (res.data.data.deepseekAvailable) {
            console.log('DeepSeek API 可用');
          } else {
            console.log('DeepSeek API 不可用，将使用本地知识库');
          }
        }
      },
      fail: () => {
        console.log('无法检查API状态，将使用本地知识库');
      }
    });
  },

  // 获取快捷问题列表
  getQuickQuestions() {
    wx.request({
      url: 'http://localhost:3000/api/ai/quick-questions',
      method: 'GET',
      success: (res) => {
        if (res.data && res.data.code === 0) {
          this.setData({ quickQuestions: res.data.data });
        }
      },
      fail: () => {
        // 如果API失败，使用默认问题
        this.setData({
          quickQuestions: [
            '如何下单？',
            '如何支付？',
            '订单状态说明',
            '如何联系客服？',
            '配送时间多久？',
            '可以退款吗？',
            '会员有什么优惠？',
            '营业时间是几点？',
            '奶茶价格是多少？',
            '有什么推荐的吗？',
            '奶茶健康吗？',
            '有过敏原吗？'
          ]
        });
      }
    });
  },

  onInputChange(e) {
    this.setData({
      inputMessage: e.detail.value
    });
  },

  sendMessage() {
    const message = this.data.inputMessage.trim();
    if (!message || this.data.isLoading) return;

    // 添加用户消息
    this.addMessage('user', message);
    
    // 清空输入框
    this.setData({ inputMessage: '' });
    
    // 显示加载状态
    this.setData({ isLoading: true });
    this.scrollToBottom();
    
    // 调用后端AI接口
    this.callAIAPI(message);
  },

  // 调用AI API
  callAIAPI(question) {
    // 构建对话上下文（最近5轮对话）
    const context = this.buildConversationContext();
    
    wx.request({
      url: 'http://localhost:3000/api/ai/chat',
      method: 'POST',
      data: { 
        question,
        context
      },
      success: (res) => {
        if (res.data && res.data.code === 0) {
          const responseData = res.data.data;
          let sourceText = '';
          
          if (responseData.source === 'deepseek') {
            sourceText = '🤖 AI智能回复';
          } else if (responseData.fallback) {
            sourceText = `📚 本地知识库 (${responseData.fallbackReason})`;
          } else {
            sourceText = '📚 本地知识库';
          }
          
          this.addMessage('ai', responseData.answer, sourceText);
          
          // 如果是DeepSeek回复，更新API状态
          if (responseData.source === 'deepseek') {
            this.setData({
              'apiStatus.deepseekAvailable': true
            });
          }
        } else {
          this.addMessage('ai', '抱歉，我现在无法回答您的问题，请稍后重试。', '❌ 服务异常');
        }
      },
      fail: () => {
        // 如果API失败，使用本地回复
        const localResponse = this.getLocalAIResponse(question);
        this.addMessage('ai', localResponse, '📚 本地知识库 (网络异常)');
      },
      complete: () => {
        this.setData({ isLoading: false });
        this.scrollToBottom();
      }
    });
  },

  // 构建对话上下文
  buildConversationContext() {
    const messages = this.data.messages;
    const context = [];
    
    // 取最近5轮对话（10条消息）
    const recentMessages = messages.slice(-10);
    
    for (const msg of recentMessages) {
      context.push({
        role: msg.type === 'user' ? 'user' : 'assistant',
        content: msg.content
      });
    }
    
    return context;
  },

  askQuickQuestion(e) {
    const question = e.currentTarget.dataset.question;
    this.setData({ inputMessage: question });
    this.sendMessage();
  },

  addMessage(type, content, source = '') {
    const messages = this.data.messages;
    const newMessage = {
      id: ++this.data.messageId,
      type: type,
      content: content,
      time: this.data.currentTime,
      source: source
    };
    
    messages.push(newMessage);
    this.setData({ 
      messages: messages,
      scrollToView: `msg-${newMessage.id}`
    });
  },

  scrollToBottom() {
    setTimeout(() => {
      this.setData({
        scrollToView: this.data.messages.length > 0 ? 
          `msg-${this.data.messages[this.data.messages.length - 1].id}` : 'welcome'
      });
    }, 100);
  },

  // 本地AI回复（作为备用）
  getLocalAIResponse(userMessage) {
    const message = userMessage.toLowerCase();
    
    // 预设的问答对
    const qaMap = {
      '如何下单': '下单步骤：\n1. 在商品页面选择您喜欢的奶茶\n2. 点击"加入购物车"\n3. 在购物车中确认商品和数量\n4. 点击"去结算"\n5. 确认订单信息后点击"提交订单"\n6. 完成支付即可',
      
      '如何支付': '支付方式：\n1. 提交订单后会自动跳转到支付页面\n2. 目前支持微信支付\n3. 支付成功后订单状态会变为"已支付"\n4. 商家确认后会开始制作您的奶茶',
      
      '订单状态': '订单状态说明：\n• 待支付：订单已创建，等待您完成支付\n• 已支付：支付成功，等待商家处理\n• 已完成：订单已完成，可以取餐了',
      
      '联系客服': '客服联系方式：\n• 电话：400-123-4567\n• 微信：milktea_service\n• 工作时间：9:00-21:00\n• 在线客服：点击右上角"联系客服"',
      
      '配送时间': '配送时间：\n• 自提：下单后15-20分钟\n• 外卖：下单后30-45分钟\n• 高峰期可能会延长10-15分钟',
      
      '退款': '退款政策：\n• 未支付订单：可直接取消\n• 已支付订单：联系客服处理\n• 已完成订单：不支持退款',
      
      '会员': '会员优惠：\n• 新用户注册送10元优惠券\n• 消费满50元送5元优惠券\n• 生日当月享受8折优惠\n• 积分可兑换免费饮品',
      
      '营业时间': '营业时间：\n• 周一至周日：10:00-22:00\n• 节假日：9:00-22:00\n• 春节等特殊节日可能有调整',
      
      '价格': '价格说明：\n• 奶茶价格：15-30元\n• 小料加价：2-5元\n• 大杯加价：3元\n• 会员享受9折优惠',
      
      '推荐': '热门推荐：\n• 珍珠奶茶：经典口味，销量第一\n• 芝士奶盖：浓郁香滑，层次丰富\n• 水果茶：清爽解腻，健康选择\n• 抹茶拿铁：日式风味，清香怡人'
    };

    // 查找匹配的答案
    for (const [question, answer] of Object.entries(qaMap)) {
      if (message.includes(question) || question.includes(message)) {
        return answer;
      }
    }

    // 通用回复
    const generalReplies = [
      '抱歉，我没有理解您的问题。您可以尝试询问：如何下单、如何支付、订单状态、配送时间等问题。',
      '这个问题我暂时无法回答。建议您联系客服获取更详细的帮助。',
      '感谢您的提问！如果您有其他关于奶茶点餐的问题，我很乐意为您解答。',
      '您可以尝试点击下方的快捷问题，或者直接询问具体的操作步骤。'
    ];

    return generalReplies[Math.floor(Math.random() * generalReplies.length)];
  }
}); 